//当内存中无法一次装下需要处理的数据时，
//或者一边读取一边处理更加高效时，我们就需要用到数据流。
//NodeJS中通过各种Stream来提供对数据流的操作。
var fs=require('fs');
var pathname=process.argv[1];
var dst=process.argv[2];
//创建只读数据流
var rs=fs.createReadStream(pathname);
//只写数据流
var ws = fs.createWriteStream(dst);

rs.on('data',function (chunk){
	// rs.pause();//读完暂停，再写
	// doSomething(chunk,function(){
	// 	rs.resume();
	// });

	//如果写更不上读，要根据写的返回值，判断是否写完，没写完就暂停读
		if(ws.write(chunk)==false){
			rs.pause();
		}

	}
);

rs.on('end',function (){
	// cleanUp();
	ws.end();
});

ws.on('drain',function (){
	rs.resume();
});
//以上代码实现了数据从只读数据流到只写数据流的搬运，并包括了防爆仓控制。
//因为这种使用场景很多，例如上边的大文件拷贝程序，
//NodeJS直接提供了.pipe方法来做这件事情，其内部实现方式与上边的代码类似。